public class MoverPeon implements MoverPieza{

	public void movimiento(Tablero tablero, Pieza pieza, int filaDestino, String columnaDestino) {
		if(((Peon) pieza).getFueMovido()==false){ // si el peon no fue movido
			if(pieza.diferenciaFila(filaDestino)==1 || pieza.diferenciaFila(filaDestino)==2){ // si el movimiento es igual a 1 o 2 casilleros
				if(pieza.getTipo()=="B"){ // si la pieza es blanca
					if(tablero.estaVacio(pieza.getFila()+1, tablero.traducirColumna(pieza.getColumna()))==true && tablero.estaVacio(pieza.getFila()+2, tablero.traducirColumna(pieza.getColumna()))==true){ // si los dos casilleros de adelante estan vacios
						System.out.println("peon blanco, mover uno o dos casilleros");
						tablero.mover(pieza, filaDestino, columnaDestino);
					}
					else{
						System.out.println("movimiento incorrecto, hay una pieza en el camino del peon");
					}
				}
				else if(pieza.getTipo()=="N"){ // si la pieza es negra
					System.out.println("movimi9ento incorrecto, el peon negro no puede retroceder");
				}
			}
			else if(pieza.diferenciaFila(filaDestino)==-1 || pieza.diferenciaFila(filaDestino)==-2){ // si el peon se mueve 1 o 2 casilleros
				if(pieza.getTipo()=="N"){ // si la pieza es negra
					if(tablero.estaVacio(pieza.getFila()-1, tablero.traducirColumna(pieza.getColumna()))==true && tablero.estaVacio(pieza.getFila()-2, tablero.traducirColumna(pieza.getColumna()))==true){ // si los casilleros de adelante estan vacios
						System.out.println("peon negro, mover uno o dos casilleros");
						tablero.mover(pieza, filaDestino, columnaDestino);
					}
					else{
						System.out.println("movimiento incorrecto, hay una pieza en el camino del peon");
					}
				}
				else if(pieza.getTipo()=="B"){ // si la pieza es blanca
					System.out.println("movimiento incorrecto, el peon blanco no puede retroceder");
				}
			}
			else if(pieza.diferenciaFila(filaDestino)==0){ // si el movimiento es igual a cero
				System.out.println("movimiento incorrecto, el peon no se movio");
			}
			else{
				System.out.println("movimiento incorrecto, el peon no se puede mover mas de dos casilleros");
			}
		}
		else if(((Peon) pieza).getFueMovido()==true){ // si el peon ya fue movido
			if(pieza.diferenciaFila(filaDestino)==1){ // si el movimiento es igual a 1
				if(pieza.getTipo()=="B" && tablero.estaVacio(filaDestino, tablero.traducirColumna(pieza.getColumna()))==true){ // si el peon es blanco y el casillero de adelante es igual a 1
					System.out.println("peon blanco, mover un casillero");
					tablero.mover(pieza, filaDestino, columnaDestino);
				}
				else if(pieza.getTipo()=="N"){ // si el peon es negro
					System.out.println("movimiento incorrecto, el peon negro no puede retroceder");
				}
				else{
					System.out.println("movimiento incorrecto, hay una pieza en el camino del peon");
				}
			}
			else if(pieza.diferenciaFila(filaDestino)==-1){ // si el movimiento es igual a -1
				if(pieza.getTipo()=="N" && tablero.estaVacio(filaDestino, tablero.traducirColumna(pieza.getColumna()))==true){ // si el peon es negro y el casillero de adelante es negro
					System.out.println("peon negro, mover un casillero");
					tablero.mover(pieza, filaDestino, columnaDestino);
				}
				else if(pieza.getTipo()=="B"){ // si el peon es negro
					System.out.println("movimiento incorrecto, el peon blanco no puede retroceder");
				}
				else{
					System.out.println("movimiento incorrecto, hay una pieza en el camino del peon");
				}
			}
			else{
				System.out.println("no se puede mover dos casilleros");
			}
		}
		else{
			System.out.println("movimiento incorrecto");
		}
	}
}
